Adrenalin v0.70alpha2

Файлэхопроцессор для семейства OS Windows (95 и выше).

Содержание.

1. О программе.
2. Общая информация, термины и понятия.
  2.1. Обмен информацией с мэйлером.
    2.1.1. Binkley-style Outbound.
    2.1.2. FileBoxes.
3. Файлы конфигурации.
  3.1. adrenalin.cfg
  3.2. links.xml
  3.3. areas.xml
4. Работа с программой.
  4.1. Тоссинг входящих тиков и файлов.
  4.2. Обработка нетмэйл-запросов к Адреналину.
  4.3. Хатчинг файлов в файлэху.
  4.4. Пуржинг (зачистка) файлэх.
  4.5. Дополнительные режимы работы.
5. Благодарности.

1. О программе.

  Adrenalin - файлэхопроцессор для платформы Win32, распространяемый вместе с исходными текстами на правах freeware (Вы можете использовать данную программу/исходные тексты и распространять её/исходники без ограничений, при условии, что Вы не извлекаете из этого прибыли без ведома автора). Автор программы - Андрей Купришов (Andrey Kuprishov, 2:5023/27@fidonet).
Особенности Адреналина:
  • механизм 5D-адресации (т.е. zone:net/node.point@domain), позволяющий использовать Адреналин в качестве программы-гейта файлэх между несколькими FTN-сетями;
  • работа с Binkley-style outbound в режимах Xenia и Portal of Power;
  • работа с FileBoxes outbound и Long FileBoxes outbound;
  • поддержка неограниченного количества АКА-адресов, линков, областей;
  • подсчёт трафика по файлэхам;
  • три типа пуржинга;
  • конфигурационные файлы в xml-формате;

2. Общая информация, термины и понятия.

  Adrenalin предназначен для использования в FTN-сетях (сетях, построенных и функционирующих по принципу сети Fidonet). Поэтому технические аспекты работы таких сетей останутся за рамками данной документации, а основной акцент будет сделан на тех терминах, которые используются непосредственно при работе файлэхопроцессора.
  Для обмена файлами между участниками FTN-сетей используются файлэхи. Файлэха обладает как минимум именем, характеризующим тематику файлов, которые по ней передаются (например, файлэха BOOK служит для обмена файлами, содержащими тексты различных литературных произведений).
  Файлэхопроцессор - программа для обработки приходящих на узел пар файлов: сам файл данных и сопровождающий его тик-файл (файл с расширением tic). Тик-файл содержит информацию о файле данных: кто его отправил, в какую файлэху, когда, с каким описанием и так далее. Задача файлэхопроцессора в общем случае сводится к переносу файла из каталога, в который складывает файлы мэйлер, в каталог соответствующей файлэхи, а затем к подготовке информации для мэйлера, если данный файл должен быть отправлен другим подписчикам файлэхи. На этапе подготовки информации мэйлеру файлэхопроцессор создаёт новые тик-файлы для каждого подписчика.
  Описанный в предыдущем абзаце процесс называется тоссингом (от toss).
  Если файл был помещён в файлэху лишь на нашей системе (а не получен нами от другой системы), то процесс помещения файла в файлэху и подготовки информации называется хатчингом (от hatch).
  Процесс очистки файлэх от уже отправленных подписчикам файлов или же от "старых" файлов (полученных нами ранее, например, месяца назад) называется пуржингом (от purge).   
  Системы, с которыми Вы непосредственно линкуетесь (с которыми напрямую связывается Ваш мэйлер) - линки - являются потенциальными подписчиками. Чтобы узнать перечень файлэх Вашей системы, подписаться или отписаться от файлэхи, линки присылают нетмэйл-сообщение на Ваш адрес, но на имя Adrenalin (или на один из псевдонимов используемого Вами файлэхопроцессора, например Allfix). Адреналин ищет подобные письма в указанном ему netmail-каталоге, и по возможности отвечает на них. Затрудняюсь охарактеризовать этот процесс одним словом, но он тоже играет немаловажную роль в функционировании файлэх.
  Адреналин поддерживает группы файлэх. Под группой понимается некое множество файлэх, наделённое именем и описанием. Каждая файлэха должна относиться к какой-нибудь одной группе. Группы не могут быть вложенными. Объединение файлэх в группы Вы можете выполнять по каким угодно критериям, например, создать по группе для каждого аплинка, или же группу файлэх с картинками и группу файлэх с музыкой, и так далее.

2.1. Обмен информацией с мэйлером.

  Для того, чтобы подписчики получили файлы (и тики), файлэхопроцессор должен "сообщить" мэйлеру, кому какие файлы следует отправить. Существует ряд способов подготовки подобной информации, как то:
  • создание netmail-сообщения с атрибутом Attached, в заголовке которого указывается прикреплённый файл (этот режим не поддерживается Адреналином);
  • создание в определённом каталоге файлов, содержащих списки файлов, которые необходимо отправить; этот режим формирования файлов для отправки получил название Binkley-style outbound и поддерживается Адреналином;
  • файлы, которые необходимо отправить на систему, копируются в опрелённый каталог (его имя определяется адресом получателя); каждый подобный каталог является так называемым файловым адресным ящиком, а данный режим называется FileBoxes; начиная с версии 0.70alpha2 Адреналин поддерживает FileBoxes.

2.1.1. Binkley-style Outbound.

  документация не подготовлена
Почитать о технической организации Binkley-style Outbound можно в SU.FIDOTECH FAQ.

2.1.2. FileBoxes.

  документация не подготовлена
Почитать о FileBoxes можно в документации к мэйлеру T-Mail от Andy Elkin.

3. Файлы конфигурации.

  При запуске Адреналин ищет в том же каталоге, где расположен выполняемый файл (adrenalin.exe), следующие конфигурационные файлы: adrenalin.cfg, links.xml и areas.xml. Файл adrenalin.cfg является обычным текстовым файлом, файлы links.xml и areas.xml - xml-файлы. Для успешного чтения xml-файлов Адреналину необходима библиотека MiniSAX.dll, она должна находиться в том же каталоге, в котором находится adrenalin.exe, в каталоге System32 или в одном из каталогов, определённых в переменной окружения PATH. Данная библиотека входит в стандартную поставку Адреналина.
  В файле about_xml.txt в подкаталоге docs находится небольшое описание xml (это фрагмент письма из конференции ADRENALIN.SUPPORT). Рекомендую ознакомиться с ним, прежде чем Вы приступите к редактированию xml-конфигов.
  Работая с XML, некоторые символы необходимо кодировать при их использовании внутри тагов или же в значениях атрибутов. Подобные символы перечислены ниже:
  
<   -   &lt;
>   -   &gt;
"   -   &quot;
'   -   &apos;
&   -   &amp;
Например, если имя линка выглядит так: Вася <ZIZOP> Пупкин, то в links.xml его придётся указать следующим образом:
<sysop>Вася &lt;ZIZOP&gt; Пупкин</sysop>
А если имя линка выглядит следующим образом: Вася & Co, то в links.xml его необходимо указать так:
<sysop>Вася &amp; Co</sysop>

3.1. adrenalin.cfg.

  Конфигурационный файл adrenalin.cfg содержит основные настройки системы. Он является обычным текстовым файлом (в следующих версиях он будет заменён на xml-файл). Формат файла adrenalin.cfg выглядит следующим образом:
<ключевое слово> <значение> [<значение> ...]
Регистр букв ключевых слов произволен (ADDRESS и address считаются одинаковыми ключевыми словами). adrenalin.cfg может содержать комментарии. Комментарий начинается с символа "точка с запятой". Часть строки, являющаяся комментарием, игнорируется Адреналином.
  Если значение параметра должно содержать пробелы или ";" (например, это имя файла или каталога), то это значение необходимо заключить в двойные кавычки.
  Имена файлов и каталогов могут быть абсолютными (с указанием диска) или относительными (в этом случае во время работы они будут раскрыты относительно каталога, в котором находится Адреналин). Наличие в имени каталога конечного символа '\' не обязательно.
  Например, если Адреналин находится в каталоге D:\FIDO\Adrenalin, а путь к netmail-сообщениям указан в виде "..\Mail", то поиск сообщений будет производиться в каталоге D:\FIDO\Mail.
  Рекомендую указывать именно относительные пути, это облегчит перенос Адреналина в другой каталог или даже на другой логический диск.
  Рассмотрим ключевые слова, которые можно (и нужно) использовать в adrenalin.cfg:
  
Address Zone:Net/Node[.Point][@Domain]
Задаёт основной адрес системы; если поинт не указан, используется ноль, если домен не указан, используется домен Fidonet (в следующих версиях возможен переход на домен по умолчанию fidonet.org).
AKA [[Zone:]Net/]Node[.Point][@Domain]
Задаёт дополнительный адрес системы (Also Known As), те элементы адреса, которые не указаны, будут рассчитаны на основе основного адреса системы.
Можно указать любое количество AKA-адресов.
SysOp <Sysop Name>
Задаёт имя системного оператора (попросту говоря, Ваше имя), значение параметра не надо заключать в двойные кавычки.
Внимание: имя не должно превышать 35 символов (в противном случае оно обрезается).
Inbound <path>
Задаёт каталог, в котором будет осуществляться поиск тик-файлов и соответствующих файлов, пришедших по файлэхам, при выполнении команды TOSS.
Outbound <path>
Задаёт каталог исходящих файлов, на данный момент не используется.
BinkOutbound <path>
Задаёт каталог Bink-style Outbound для основного адреса системы.
FileBoxes <path>
Задаёт каталог для файловых адресных ящиков; в этом каталоге будут создаваться ящики для тех линков, посылка файлов которым осуществляется с помощью FileBoxes.
LongFileBoxes <path>
Задаёт каталог для файловых адресных ящиков, имеющих длинные имена; в этом каталоге будут создаваться ящики для тех линков, посылка файлов которым осуществляется с помощью FileBoxes.
Примечание: параметры FileBoxes и LongFileBoxes являются взаимоисключающими, т.е. Вы можете задать использование либо коротких, либо длинных имён файловых ящиков.
CheckDomainInBSO (Yes|No)
Этот параметр определяет поведение Адреналина при работе с BinkOutbound. Если он установлен в Yes (по умолчанию), то при создании BSO на систему из другого домена имя домена будет использовано в качестве имени каталога. Если этот параметр имеет Если указано значение No, то независимо от доменного адреса Адреналин будет руководствоваться лишь номером зоны.
Netmail <path>
Задаёт каталог для работы с нетмэйлом; в этом каталоге Адреналин при выполнении команды FIX будет осуществлять поиск netmail-запросов к файлэхопроцессору и создавать ответы (речь идёт о *.msg-файлах).
BadTics <path>
Задаёт каталог для плохих тик-Файлов (распознаных, как TIC, но имеющих логические ошибки)
Внимание: файл, указанный в "плохом" тике, останется в Inbound-каталоге.
NewTics <path>
Задаёт каталог, в котором будут создаваться тик-Файлы для отправки их на соответствующие системы-линки (только в режиме BinkOutbound; поскольку в режиме FileBoxes тик-файлы будут созданы непосредственно в файловых адресных ящиках).
ProcessedTics >path>
Задаёт каталог, в который будут переноситься обработанные при тоссинге тик-Файлы. При переносе тик-файлы переименовываются, новое имя регистрируется в лог-файле.
Данный параметр необязателен. Если он неопределён, то после обработки тик-файлы будут удаляться.
AutoCreated <path>
Задаёт базовый каталог для автоматически создаваемых областей. Его можно будет переопределить индивидуально для каждого линка.
LongPaths (Yes|No)
Определяет алгоритм выбора подкаталогов для автоматически создаваемых областей; Yes означает, что имя каталога будет совпадать с именем файлэхи, No означает, что совпадать будут лишь первые 8 символов, причём точки будут заменены на знаки подчёркивания; в том случае, если подобное имя каталога уже существует, каталог будет дополнен 3-хсимвольным индексом, увеличивающимся до тех пор, пока не будет найдено ещё не используемое имя каталога.
Aliases <Alias name> [<Alias name> ...]
Задаёт возможные псевдонимы для файлэхопроцессора, на которые он будет "откликаться" при просмотре нетмэйл-сообщений.
Пример:
Aliases Allfix DMTic Filin
LogFile <Log file name>
Задаёт имя файла протокола, в который Адреналин будет помещать информацию о своей работе.
RequestsLogFile <requests log file name>
Задаёт имя файла протокола, в который Адреналин будет помещать информацию об обработке запросов (т.е. писем на его имя или на один из заданных псевдонимов). Если имя лога не задано, эта информация не будет протоколироваться.
LongDescPrefix <string>
Задаёт префикс для длинных описаний, которым они будут предваряться в файле files.bbs.
HandleReplaces (Yes|No)
Указывает, надо ли обрабатывать ключевое слово Replaces в приходящих тиках: Yes означает, что файл, указанный в строке Replaces тик-Файла, будет удалён.
Примечание: Адреналин не обрабатывает маски файлов в параметре Replaces.
HatchOriginAddress (Main|AKA)
Задаёт, какой адрес будет подставляться в поле Origin тиков, создаваемых для линков при хатчинге; если Main, то для всех линков будет подставляться основной адрес системы; если AKA, то для каждого линка будет подставляться соответствующий ему АКА-адрес.
Значение по умолчанию: AKA
Пример:
HatchOriginAddress Main
AutoDescFile <filename>
Задаёт имя файла, в котором Адреналин попытается найти описание для автоматически создаваемой файлэхи; формат файла аналогичен формату файла FILEECHO LIST R50 и подобных ему (т.е. файл должен содержать строки вида Area <name> <desc> ...). Если параметр не задан, подбор описания производиться не будет.
AllAKASeen (Yes|No)
Если Yes, то при форвардинге файлов на даунлинков в соответствующие тик-файлы будут добавлены строки Seenby, содержащие все адреса системы; если No, то будут использоваться лишь необходимые адреса (адрес АКА для соответствующего линка). Целесообразно использовать значение Yes для предотвращения зацикливания файлэх (если какой-либо пользователь подписался на неё у 2-х и более линков).
Значение по умолчанию: No
LngFile <filename>
Задаёт имя языкового файла, по умолчанию используется файл Adrenalin.lng. Порядок строк файла крайне важен. Каждая строка может быть либо пустой, либо должна содержать заключённую в двойные кавычки последовательность символов. Эти строки используются Адреналином в ответах линкам. Если после закрывающих двойных кавычек через пробел указан символ '\', то следующая строка будет считаться продолжением многострочного сообщения. В языковом файле также допустимы комментарии, они должны начинаться с символа ';'. Вы можете создать на основе Adrenalin.lng свои языковые файлы. Каждое сообщение файла Adrenalin.lng предварено комментарием-пояснением.
В поставку входит файл Russian.lng. Что в нём, я надеюсь, понятно. При его использовании не забудьте заменить моё имя на своё.
KillProcessedMail (Yes|No)
Управляет поведением Адреналина при обработке сообщения, адресованного ему: если Yes, то Адреналин удалит обработанное сообщение, если No, то на сообщение будет поставлен атрибут Received.
Значение по умолчанию: No
ShowMustGoOn (Yes|No)
Определяет, будет ли Адреналин выводить на экран информацию о новых файлах при тоссинге. Независимо от значения данного параметра информация помещается в файл протокола.
Значение по умолчанию: Yes
LogMsgNames (Yes|No)
Определяет, будут ли записываться в файл протокола имена просматриваемых msg-файлов при выполнении команды FIX. Если msg-файл распознан и адресован нам, после имени файла выводится строка read, в противном случае выводится строка failed.
Значение по умолчанию: No
CreateFlagAfter <action> <flag file name>
Создаёт файл-флажок, сигнализирующий о том, что в результате указаной акции произошли изменения для линков (создались новые письма или были подготовлены файлы для отправки линкам).
<action> = Fix | Toss | Hatch | All (т.е. всё вместе)
По умолчанию значение не определено, поэтому флажки создаваться не будут.
Пример 1:
CreateFlagAfter All C:\FIDO\T-MAIL\FLAGS\repack.t-m
Это аналогично следующим строчкам:
CreateFlagAfter Fix C:\FIDO\T-MAIL\FLAGS\repack.t-m
CreateFlagAfter Toss C:\FIDO\T-MAIL\FLAGS\repack.t-m
CreateFlagAfter Hatch C:\FIDO\T-MAIL\FLAGS\repack.t-m
Пример 2:
CreateFlagAfter Hatch C:\FIDO\T-MAIL\FLAGS\hatched.t-m
CreateFlagAfter Toss C:\FIDO\T-MAIL\FLAGS\tossed.t-m
FreeDiskSpaceLimit <drive path> <limit in kbytes>
Указывает Адреналину проверять при запуске наличие свободного места на заданном диске. Если на диске недостаточно места, то Адреналин создаст служебное письмо сисопу и не будет выполнять никаких действий. Можно задать несколько таких строк для проверки нескольких дисков. При указании размера можно использовать запятую для большей наглядности. Обратите внимание, что необходимо указывать не букву диска, а путь.
Примеры:
FreeDiskSpaceLimit C:\ 100
FreeDiskSpaceLimit D:\ 32,000
ForwardExpirationTime <number of days>
"Время жизни" строки в forwards.lst с информацией об отфорверженной эхе, в днях.
Значение по умолчанию: 0 (не учитывается).
FileFlag <file flag name> <mask to compare> [<area>]
Определяет файл-флажок, создаваемый Адреналином при тоссинге файла, подпадающего под маску. Если параметр <area> не указан, то проверка осуществляется для всех файлов. Если параметр <area> указан, то проверка осуществляется лишь для файлов, тоссинг которых происходил в область <area>.
ConcatDescriptions (Yes|No)
Управляет способом обработки описаний входных тик-файлов. Если его значение - Yes, то все строки Desc, начиная со 2-ой, считаются строками LDesc, в противном случае они игнорируются.
MessageLimit (KBytes|Lines) <число>
Задаёт параметр "нарезки" сообщений. В этом случае Адреналин отвечает не одним сообщением на команду, а группой сообщений, каждое из которых удовлетворяет установленным ограничениям. Целесообразно использовать этот параметр, если на узле большое количество файлэх.
Можно указать MessageLimit дважды, в килобайтах и в строках, в этом случае каждое сообщение будет удовлетворять обоим требованиям. Имейте в виду, что анализируется лишь информационная часть сообщения (без заголовка и служебных строк), поэтому реальные сообщения будут чуть больше.
По умолчанию значение не определено, нарезка писем не осуществляется.
Примеры:
1) MessageLimit KBytes 10
2) MessageLimit Lines 100
3) MessageLimit KBytes 16
  MessageLimit Lines 400
WarningInsteadOfError <warning>
Позволяет рассматривать некоторые ошибки как некритические (выдаётся лишь предупреждение). Реализованы следующие типы предупреждений:
IncorrectCRC32 - в тик-файле отсутствует таг CRC, или его значение не совпадает с CRC32 соответствующего файла.
Внимание: включать данное предупреждение не рекомендуется, так как это может привести к распространению на Ваших линков битых файлов или файлов, не соответствующих тикам.
WarnSysopByMail (Warnings|Errors|Warnings Errors)
Помогает отлавливать "плохие" тики, дублируя часть информации о предупреждениях или ошибках (эта информация помимо записи в лог посылается нетмейлом сисопу). В дальнейшем планируется увеличить число предупреждений/ошибок, информация о которых обрабатывается по этому ключевому слову.
NoMailNotify [mode]+
Ключевое слово позволяет отключить генерацию нетмэйл-сообщений для некоторых режимов работы; на данный момент (в версии 0.70alpha2) можно указать лишь режим BasePurge.
Пример:
NoMailNotify BasePurge
Filelist <filelist name>
Имя файла файллиста. Такие файлы находятся в каталогах файлэх.
Значение по умолчанию: files.bbs
Пример:
Filelist descript.ion
FileListFormat "<format>"
Формат строки файллиста; в формате можно указывать таги, которые будут заменены соответствующими значениями (именем, размером или описанием) для обрабатываемого файла.
Определение формата выглядит следующим образом:
%[width][.precision][[modificator]type]
type
определяет тип поля, возможные значения:
   n - имя файла,
   s - размер файла,
   S - размер файла, для наглядности содержащий запятые после каждых 3-х цифр, отсчитываемых справа;
   d - описание файла
modificator
определяет форматирование самого поля, возможные значения:
   u - привести поле к верхнему регистру
   l - привести поле к нижнему регистру
width
определяет ширину поля; если значение будет меньше указанной ширины, то оно будет дополнено пробелами до этой ширины; выравнивание по умолчанию - по левому краю; если ширина отрицательная, то выравнивание будет выполнено по правому краю
precision
максимальная длина поля, если поле превышает по длине precision, то оно будет обрезано справа
Примечание 1:
вместо s(S) можно использовать k(K) и m(M) для указания размера в килобайтах и мегабайтах соответственно. По умолчанию размер указывается в байтах. Для автоматического подбора размера (если < 1024 байт, то в байтах, если меньше 1024 кбайт, то в килобайтах, если больше 1024 килобайт, то в мегабайтах) используйте вместо s(s) a(A).
Примечание 2:
чтобы выравнивать описания по некоторому размеру (например, чтобы длина строки файллиста не превышала 79 символов) с автоматическим переносом слов на новую строку, можно указать вместо типа d тип w (от window) с шириной поля описания (НЕ всей строки).
Примеры:
FileListFormat "%12un [%6S] %d"
FileListFormat "%12.12ln [%-6k] %.3d"
FileListFormat "%12n [%-6A] %57w"
Значение по умолчанию: "%12n %d"
MaxTicAge <hours>
Максимальный возраст тик-файла. Под возрастом понимается разница между текущим системным временем и временем создания тик-файла. Если данный параметр определён, Адреналин во время тоссинга будет проверять возраст тик-файлов, для которых отсутствуют файлы данных. "Устаревшие" тик-файлы будут перенесены в BadTics-каталог.
По умолчанию параметр неопределён и проверка не проводится.

3.2. links.xml.

  В общем виде документ, описывающий линки - links.xml - выглядит так:
  <links>
      <link>
          ...
      </link>
      <link>
          ...
      </link>
      ...
  </links>
  Корневым элементом документа является элемент links. У него нет атрибутов, но он может содержать любое количество подэлементов link. Элемент link (являющийся подэлементом элемента links) также не имеет атрибутов, но имеет следующие подэлементы:
name
Определяет имя сисопа, будет использоваться в следующих версиях Адреналина для обращения к сисопу в нетмэйл-сообщениях; данный элемент содержит строку данных, описывающую имя сисопа.
Пример:
<name>Vasya Pupkin</name>
address
Адрес линка. Напомню формат адреса: [[Zone:]Net/]Node[.Point][@Domain]
Отсутствующие компоненты будут дополняться только путём анализа основного адреса вашей системы.
Пример:
<address>27.999</address>
useAKA
Какое АКА из наших использовать для общения с линком. Cодержит строку, описывающую АКА. Адрес должен быть одним из ваших АКА-адресов или основным адресом; если для линка не указан соответствующий АКА-адрес, то он будет выбран автоматически (будет использоваться максимально близкий адрес, причём анализ "близости" адресов происходит по схеме: домен -> зона -> сеть -> нода).
Пример:
<useAKA>27.0</useAKA>
outbound
Элемент описывает, каким образом будут подготавливаться к отправке файлы для этого линка; данный элемент не содержит подэлементов, но имеет следующие атрибуты:
type - binkley или fileBoxes, по умолчанию binkley
flavour - как мэйлеру следует отправлять файлы,
возможные значения атрибута для Bink-style Outbound: normal, direct, crash, hold, immediate;
для FileBoxes: normal, hold;
по умолчанию hold.
Пример:
<outbound type="binkley" flavour="direct" />
security
Элемент, подэлементы которого определяют права и возможности линка (пароль, приоритеты, доступ к группам).
password
Содержит строку данных, являющуюся паролем на тик-файлы и netmail для данного линка.
sendPriority
Приоритет на отправку нам файлов, линк сможет посылать файлы лишь в те файлэхи, для которых установлен приоритет на отправку, не превышающий приоритет линка.
Значение по умолчанию: 0
receivePriority
Приоритет на получение файлов от нас, линк сможет получать файлы лишь по тем файлэхам, для которых установлен приоритет на получение, не превышающий приоритет линка.
Значение по умолчанию: 0
group
Группа, к которой линк имеет доступ, этот элемент содержит строку символов, являющуюся именем группы; для одного линка можно указать любое количество групп, к которым он имеет доступ - просто добавьте нужное количество подэлементов group в security.
Пример:
<security>
    <password>superpwd</password>
    <sendPriority>10</sendPriority>
    <receivePriority>10</receivePrioriry>
    <group>PICS</group>
    <group>MUSIC</group>
</security>
allowAreaCreation
Наличие данного элемента разрешает линку создавать у нас области (придёт от него файл в неизвестную нам файлэху, и она автоматически создастся). Подэлементы данного элемента:
path
Каталог, в котором будет создан подкаталог области.
Если данный элемент отсутствует, подкаталог файлэхи будет создан в каталоге, заданном параметром AutoCreated основного файла конфигурации.
defaultGroup
В какую группу будет записана новая область.
sendPriority
Приоритет на отправку файлов, который будет назначен области.
Значение по умолчанию: 0
receivePriority
Приоритет на отправку файлов, который будет назначен области.
Значение по умолчанию: 0
Пример:
<allowAreaCreation>
    <path>..\AreasFromLink</path>
    <defaultGroup>NewFechos</defaultGroup>
    <receivePriority>10</receivePrioriry>
</allowAreaCreation>
status
Статус линка. Элемент содержит описание статуса. Возможные значения:
passive - пассивный режим, в этом режиме система может посылать нам файлы, но сама от нас файлы не получает; данный режим линк может включать и отключать дистанционно, посредством менеджера подписки, используя команды %lock и %unlock.
unavailable - режим недоступности, в этом режиме все операции с данной системой полностью заморожены (мы не посылаем и не получаем от неё файлы, и не обрабатываем сообщения от этой системы); отключить данный режим дистанционно нельзя.
Пример:
<status>passive</status>
robotName
Задаёт имя робота файлэх для линка, которому Адреналин будет писать при форвардинге.
Значение по умолчанию: Allfix
Пример:
<robotName>Adrenalin</robotName>
availAreas
Задаёт имя файла со списком доступных на данном линке областей для подписки. Каждая строка файла является именем области.
Пример:
<availAreas>C:\FIDO\AvailAreas\areas_from_27.999.lst</availAreas>

3.3. areas.xml.

  В общем виде документ, описывающий области - areas.xml - выглядит так:
  <areas>
      <group ...>
          <area ...>
              ...
          </area>
          ...
      </group>
      <group ...>
          ...
      </group>
      ...
  </areas>
  Корневым элементом документа является элемент areas. У него нет атрибутов, но он может содержать любое количество подэлементов group. Элемент group описывает группу областей. Помимо ряда атрибутов (см. ниже) он может содержать любое количество подэлементов area, каждый из которых описывает файлэху.
group
Описывает группу файлэх. Атрибуты:
name - имя группы, начиная с версии 0.70alpha1 может быть произвольной последовательностью символов; имена групп не различаются по регистру букв.
description - описание группы; данный атрибут не является обязательным.
area
Элемент описывает область (файлэхоконференцию).
Атрибуты:
name - имя области.
description - описание области (необязательный атрибут).
path - путь к файлам области.
sendPriority - приоритет на отправку файлов в файлэху; линк сможет отправить файл лишь в том случае, если его приоритет на отправку не меньше данного значения.
Значение по умолчанию: 0
receivePriority - приоритет на получение файлов по файлэхе; линк получит файл лишь в том случае, если его приоритет на получение не меньше данного значения.
Значение по умолчанию: 0
Элемент area может содержать следующие подэлементы:
passthrough
Данный элемент не содержит в себе ничего (ни атрибутов, ни вложенных элементов), но само его наличие указывает на то, что данная файлэха является "проходной" (смотрите описание режимов пуржинга, некоторые из них имеют прямое отношение к passthrough-областям).
vetoManualPurge
Пустой элемент (без атрибутов и подэлементов), его наличие показывает, что для данной области запрещена (veto) ручная зачистка по маске, данная опция введена для того, чтобы избежать случайного уничтожения содержимого области при указании в команде PURGE масок областей, например:
Adrenalin.exe purge *
openForResend
Пустой элемент (без атрибутов и подэлементов), его наличие показывает, что область открыта для команды %RESEND, даже если пользователь не подписан на данную область.
outbound
Данный элемент, если он указан, позволяет задать способ отправки файлов области линкам независимо от того, какой тип outbound определён у самих линков.
Единственный атрибут type может иметь значение либо binkley, либо fileBoxes.
Если линку в его настройках был указан binkley-outbound, а в параметрах эхи указан fileBoxes, то для всех способов отправки файлов линку, отличных от hold (direct, crash, immediate) будет использован способ normal (FileBoxes просто не поддерживает способы, отличные от normal и hold).
linked
Элемент позволяет указать линка, подкючённого к данной области. Данный элемент может иметь специальный атрибут, routing, позволяющий явно указать возможности линка. Возможные значения атрибута:
send - линк может только посылать файлы в область, независимо от того, какими приоритетами он обладает.
receive - линк может только получать файлы из области, независимо от того, какими приоритетами он обладает.
bidirectional - линк может и получать, и посылать файлы, независимо от того, какими приоритетами он обладает.
Для каждого подключённого линка Вам необходимо задать элемент linked.
Пример:
<linked>27.1</linked>
<linked>100:1/1.76@Somenet</linked>
<linked routing="receive">11</linked>
Пример (фрагмент моей конфигурации):
<areas>
    <group name="KLG">
        <area name="NET5023"
              path="..\FileEchos\NET5023"
              sendPriority="50">
            <vetoManualPurge />
            <linked>11</linked>
            <linked>27.16</linked>
            <linked>27.17</linked>
            <linked>27.15</linked>
            <linked>27.52</linked>
            <linked>27.55</linked>
            <linked>27.59</linked>
            <linked>27.2500</linked>
            <linked>27.62</linked>
            <linked>27.84</linked>
            <linked>27.86</linked>
            <linked>47</linked>
            <linked>35</linked>
        </area>
    </group>
    <group name="33&apos;s">
        <area name="MAD.FILES"
              path="..\FileEchos\MAD.FILES"
              outbound="fileBoxes"
              sendPriority="200">
            <linked>27.11</linked>
            <linked>27.62</linked>
            <linked>27.45</linked>
            <linked>17</linked>
            <linked>27.55</linked>
            <linked routing="send">33</linked>
            <linked>27.84</linked>
            <linked>27.86</linked>
            <linked>47</linked>
        </area>
    </group>
</areas>

4. Работа с программой.

  При запуске без параметров файлэхопроцессор выводит на экран небольшую справочную информацию. Чтобы файлэхопроцессор выполнил какие-либо общественно полезные действия, необходимо указать ему вид деятельности с помощью параметров командной строки.

4.1. Тоссинг входящих тиков и файлов.

  При запуске файлэхопроцессора с параметром toss он просматривает каталог входящих файлов (Inbound) и тоссит тик-файлы и соответствующие файлы данных:
adrenalin.exe toss
  Файлэхопроцессор сканирует Inbound-каталог в поиске файлов, удовлетворяющих маске *.ti?; это позволяет не пропустить те тик-файлы, которые были переименованы мэйлером при получении тик-файла с таким же именем (а обычно в таком случае мэйлер увеличивает последнюю букву имени файла, который уже лежит в Inbound-каталоге).
  Файлы, на которые ссылаются обнаруженные тик-файлы, переносятся в соответствующие каталоги, а затем подготавливаются к отправке подписчикам, если таковые имеются (файлэхопроцессор создаёт новые тик-файлы и готовит файлы к отправке линкам, либо с помощью Bink-style outbound, либо с помощью FileBoxes).
  При тоссинге происходит обновление файла newfiles.txt в каталоге Адреналина. Для каждого обработанного файла данных в этот файл помещаются следующие строки:
    Area <имя файлэхи>
    File <имя файла>
    Size <размер файла, в байтах>
    Desc <описание>
    Origin <адрес, с которого файл был захатчен>
    Uplink <адрес, с которого этот файл пришёл на Вашу станцию>
  В случае автосоздания новой файловой области происходит обновление файла newareas.txt, и в него помещается строка следующего содержания:
Fileecho area <имя области> created by <адрес отправителя тика>
  Если в результате тоссинга будет успешно обработан хотя бы один тик-файл, то произойдёт обновление файла traffic.dat. В первую строку файла записывается время, начиная с которого ведётся учёт трафика, последующие строки имеют вид:
<имя области> <трафик в байтах>
  Оформлением трафика в более читабельный текст занимается программка на Перле traffic.pl. Она входит в стандартную поставку файлэхопроцессора.
  Когда файлэхопроцессор готовит файлы к отправке другой системе, работая с Bink-style Outbound, может возникнуть ситуация, когда с этой же системой работает другое приложение (например, в это время мэйлер выполняет с системой обмен файлами), и Bink-style Outbound заблокирован (в нём существует флажок занятости, bsy-файл). В случае обнаружения флага занятости Адреналин будет работать с так называемым "pending outbound" вместо основного, используя для этого подкаталог bso.tmp в том каталоге, где находится adrenalin.exe. При очередном тоссинге Адреналин в первую очередь проверяет pending outbound на наличие в нём файлов и добавляет их содержимое к настоящему Bink-style Outbound.
  Аналогичный метод отложенной отправки (pending outbound) используется также и при хатчинге файлов.
  По команде tossbad Адреналин выполняет тоссинг "плохих" тиков. Команда по своему действию аналогична команде toss, за исключением того, что сканируется BadTics-каталог. Поиск файлов с данными осуществляется в Inbound-каталоге. Команда предназначена для случаев, когда, например, тик-файлы считались некорректными из-за неправильной настройки программы (например, неправильно прописанного пароля) или же файлы для тиков отсутствовали, и тик-файлы были перемещены в BadTics каталог, а файлы данных прибыли с опозданием.

4.2. Обработка нетмэйл-запросов к Адреналину.

  По команде fix Адреналин обрабатывает нетмэйл-запросы:
adrenalin.exe fix
  Поиск запросов осуществляется в Netmail-каталоге. Запрос - письмо, имя адресата которого совпадает с одним из псевдонимов программы или с именем Adrenalin, а адрес назначения совпадает с одним из адресов Вашей системы). Адреналин обрабатывает найденные запросы и создаёт необходимые письма-ответы в том же каталоге. Письма запросов удаляются либо получают атрибут Received, в зависимости от значения параметра KillProcessedMail (см. описание параметров файла adrenalin.cfg).
  В запросах к Адреналину можно использовать следующие команды:
  
%help - программа вернёт руководство по использованию менеджера подписки;
%list - запрос списка Ваших областей, доступных данному линку;
%query - запрос списка областей, к которым подключён линк;
%linked - то же, что и %query;
%unlinked - запрос списка областей, к которым линк не подключён, но на которые он может подписаться;
%lock - команда переводит линка в пассивный режим;
%unlock - выход из пассивного режима;
%avail - запрос списка областей, доступных на аплинках;
%resend - пересылает содержимое файлэхи; файлэхопроцессор создаёт тик-файлы для каждого отсылаемого файла.
Формат: %resend <имя области> [<маска файлов> ...]
Пример:
%resend NODEDIFF nodediff.z*
+<имя фэхи> - попытка подписаться на область; вместо имени фэхи возможно использование масок, содержащих спецсимволы '*' и '?'
-<имя фэхи> - попытка отписаться от области; вместо имени фэхи возможно использование масок, содержащих спецсимволы '*' и '?'
  Каждый запрос должен находиться на отдельной строке письма.
  В поле Subject (тема) письма-запроса должен стоять пароль данного линка.

4.3. Хатчинг файлов в файлэху.

  По команде hatch файлэхопроцессор осуществляет хатчинг файла в указанную файлэху (с его копированием в соответствующий каталог, созданием тик-файлов для подписчиков, подготовкой файлов к отправке линкам).
  Эта команда имеет следующий формат:
  hatch <file> <area> <desc> [-r <Replaces>] [-L]
  Если использована опция -L, то файл не будет перенесён в каталог файлэхи, а в BSO-файлах будет указано его полное имя.
  Вместо имени файла, который надо захатчить, можно указать файл, содержащий список файлов для хатчинга. При этом имя файла-списка надо предварить символом '@' при указании в командной строке.
  Формат файла-списка:
  <file> [<description>]
  ...
  Если имя файла для хатчинга содержит пробелы, то оно должно быть заключено в двойные кавычки. Если описание для какого-либо файла не указано, будет взято описание из командной строки.
Пример:
файл to_hatch.lst содержит следующие строки:
super1.zip Super-Puper1
super2.zip
Команда для хатчинга:
hatch @to_hatch.lst MYGOODAREA "some desc"
В результате её выполнения в фэху MYSUPERAREA будут захатчены файлы super1.zip (с описанием Super-Puper1, взятым из файла) и super2.zip (с описанием some desc, взятым из командной строки).
Внимание: если указано значение Replaces, то в тик-Файлы будет добавлен параметр Replaces, но на нашей системе файл НЕ будет заменён.

4.4. Пуржинг (зачистка) файлэх.

  Адреналин поддерживает три основных режима зачистки файлэх. Прежде чем рассмотреть каждый из них, необходимо заметить, что в версии 0.70alpha2 зачистка корректно работает лишь с Bink-style Outbound, поэтому я крайне не рекомендую использовать её даже в случае, если только часть линков или избранные области используют FileBoxes. Команды зачистки:
purge - "очищает" файлэхи, т.е. удаляет из них те файлы, для которых отсутствуют тик-файлы (эта предпосылка с большой долей вероятности позволяет считать, что подписчики получили файлы).
Данную команду можно использовать двумя способами:
1) без параметров, в этом случае файлы будут удалены только из проходных (pass-through) файлэх;
2) с параметрами - именами файлэх, которые надо "зачистить"; в имени файлэхи можно использовать спец. символы '*' (ноль или более любых символов) и '?' (один любой символ); если имя файлэхи предварено символом '-', то данная файлэха (файлэхи) будут исключены из предварительно полученного списка очищаемых файлэх. Таким образом, следующая строка вызовет удаление файлов из всех файлэх, кроме файлэхи BOOK и файлэх, имена которых начинаются с XDOC:
Adrenalin.exe purge * -BOOK -XDOC*
Для того, чтобы уберечься от случайного удаления файлов из некоторых файлэх, вы можете наложить на них вето (см. задание областей). Такие файлэхи будут зачищаться лишь при явном их указании. Поясним на примере. Предположим, у нас есть две области - BOOK и NODEDIFF, причём для файлэхи BOOK наложено вето на пуржинг.
Тогда выполнение следующей команды вызовет очистку лишь области NODEDIFF:
Adrenalin.exe purge *
Чтобы очистить и область BOOK, Вы должны указать её явно:
Adrenalin.exe purge * BOOK
timepurge - удаляет из Bink-style Outbound ссылки на тики и файлы старше указанного значения, а также удаляет старые тики.
Формат команды:
<hours> [<mask>]+
где
<hours> - время (в часах), по которому оценивается степень старости тиков;
<mask> - маска для адресов линков, в маске возможно использование спецсимволов '*' (любая, даже пустая, последовательность символов) и '?' (один любой символ).
Например, */27.* для обработки всех узлов с номером 27. Если маска не указана, будут обработаны все линки.
basepurge - удаляет из файлэх файлы старше указанного срока. Информация о времени прихода файлов берётся из files.db.
Формат команды:
<days> [areamask]+
где
<days> - время (в днях), по которому оценивается возраст файлов;
<areamask> - маска для областей.
Если ни одна маска не указана, то будут зачищены все области, кроме тех, на которые наложено вето.
В данном режиме пуржинга из таких областей нельзя удалить файлы, даже непосредственно указав имена областей.
По окончании зачистки создаётся письмо сисопу со списком удалённых файлов.
Данная команда не проводит корректировку BSO и не удаляет тики.

4.5. Дополнительные режимы работы.

  Адреналин поддерживает ряд других, ещё не освещённых выше команд.
  
debug - эта "недокументированная" команда позволяет проверить, насколько правильно Адреналин считал настройки из файлов конфигурации. Вся информация выводится в STDOUT (в общем случае на экран), поэтому для полноценного анализа советую перенаправить вывод в файл:
Adrenalin.exe DEBUG > debug.txt
help - выводит на экран более детальную справку, чем та, что печатается при запуске Адреналина без параметров.
relink - автоматически формирует письмо файлэхороботу указанной системы, содержащее запрос на подписку на те фэхи, на которые мы на этой системе подписаны.
Формат команды:
<address> [<robot name>]
где
<address> - адрес системы, с которой надо перелинковаться (требования к адресу такие же, как и предъявляемые к адресам линков в файле конфигурации).
<robot name> - необязательный параметр, задающий имя работа,которому будет адресовано письмо. Если имя робота не указано, то будет использовано имя робота из описания линка. Если линку не назначено имя робота, то письмо адресуется роботу AllFix.
hand - имитирует письмо от линка Адреналину.
Формат команды:
<addr> <command>+
<addr> - адрес линка (требования к адресу такие же, как и предъявляемые к адресам линков в файле конфигурации).
<command> - любая команда.
Пример:
adrenalin.exe hand 27.1 %list +aftn*
changegroup - добавляет или удаляет группу из описания указанных линков, тем самым избавляя Вас от необходимости редактировать links.xml вручную.
Формат команды:
changegroup (+|-)<group> <links mask>
Чтобы добавить группу, предварите её имя плюсом, чтобы удалить - минусом.
<links mask> - маска для линков, которые надо отредактировать на предмет доступа к группе.
Примеры:
adrenalin.exe changegroup +NewLocalGroup 2:5023/27.*
  - разрешает доступ к группе с именем NewLocalGroup всем моим поинтам.
adrenalin.exe changegroup -MUSIC 3:*/*
  - запрещает доступ к группе MUSIC всей Австралии.
Примечание: Вы можете использовать в данной команде даже имена пока ещё не существующих групп (тех, которые не прописаны в areas.xml).

5. Благодарности.

  Хочу выразить свою признательность всем людям, так или иначе оказавшим мне помощь в создании данной программы, присылавшим свои пожелания и конструктивную критику, а также всем подписчикам ADRENALIN.SUPPORT (даже тем, кто ни разу не написал в эху).